﻿using System;

namespace Viyi.Util.Codec
{
    static partial class Base64Tool
    {
        /// <summary>
        /// 将2进制数据进行BASE64编码，得到编码文本。
        /// </summary>
        /// <param name="data">源数据</param>
        /// <param name="isBreakLines">是否在编码结果中每76个字符使用换行符进行分隔。</param>
        /// <returns>BASE64编码文本</returns>
        public static string Base64Encode(this byte[] data, bool isBreakLines = false)
        {
            if (data == null) { return null; }

            return Convert.ToBase64String(data, isBreakLines
                ? Base64FormattingOptions.InsertLineBreaks
                : Base64FormattingOptions.None);
        }

        /// <summary>
        /// 将2进制数据中的一部分进行BASE64编码，得到编码文本
        /// </summary>
        /// <param name="data">源数据</param>
        /// <param name="start">需要编码的数据起始索引</param>
        /// <param name="length">需要编码的数据长度</param>
        /// <param name="isBreakLines">是否在编码结果中每76个字符使用换行符进行分隔。</param>
        /// <returns>BASE64编码文本</returns>
        public static string Base64Encode(this byte[] data, int start, int length,
            bool isBreakLines = false)
        {
            if (data == null) { return null; }

            return Convert.ToBase64String(data, start, length, isBreakLines
                ? Base64FormattingOptions.InsertLineBreaks
                : Base64FormattingOptions.None);
        }
    }
}
